package com.liu.threadPool.scheduled;

import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;

/**
 * @author LIU
 * @version 1.0
 * @description 延迟执行任务
 *
 * 测试ScheduleExecutorService接口中延迟执行任务和重复执行任务的功能
 *   schedule(Runnable command, long delay, TimeUnit unit)
 *           延迟时间单位是unit,数量是delay的时间后执行command。
 *   scheduleAtFixedRate(Runnable command, long initialDelay, long period, TimeUnit unit)
 *          延迟时间单位是unit,数量是initialDelay的时间后,每间隔period时间重复执行一次command。
 *   scheduleWithFixedDelay(Runnable command, long initialDelay, long delay, TimeUnit unit)
 *           创建并执行一个在给定初始延迟后首次启用的定期操作，随后，在每一次执行终止和下一次执行开始之间都存在给定的延迟。
 *
 *   参考链接 https://blog.csdn.net/qq_43061290/article/details/106911277
 * @date 2023/8/4 16:53
 */
public class ScheduledDemo {
    public static void main(String[] args) {
        ScheduledExecutorService se = Executors.newScheduledThreadPool(4);

        //提交任务，每个任务延迟两秒执行
        for (int i = 1; i <= 10; i++) {
            se.schedule(new MyTask(i),2000, TimeUnit.MILLISECONDS);
        }

        //主线程结束
        System.out.println("over");
    }

}
